package com.link.base.wechat.wxplatform.service;

import com.link.base.wechat.wxplatform.model.WxPlatform;
import com.link.core.basic.service.BasicService;

import java.util.List;

/**
 * 微信公众号管理
 *
 * @author 欧阳振强
 * @date 2019/02/27 14:51
 */
public interface WxPlatformService extends BasicService<WxPlatform> {
    /**
     * 查询公众号记录，基于公众号应用Id
     *
     * @author ouyangzhenqiang
     * @date 2019/02/27 15:13
     * @param wxAppId 公众号应用Id
     */
    WxPlatform getWxPlatformByAppId(String wxAppId) throws Exception;

    /**
     * 查询微信公众号无corpId限制
     *
     * @author ouyangzhenqiang
     * @date 2019/02/27 15:28
     */
    List<WxPlatform> queryAllNoCorp() throws Exception;

    /**
     * 更新公众号有效无效字段
     *
     * @author ouyangzhenqiang
     * @date 2019/02/28 09:54
     * @param record 公众号对象
     */
    void validFlagWxppUpdate(WxPlatform record) throws Exception;
    
    /**
     * 设置主要公众号
     * 
     * @author ouyangzhenqiang
     * @date 2019/02/28 09:56
     * @param record 公众号对象
     */
    void defaultFlagWxppUpdate(WxPlatform record) throws Exception;

    /**
     * 将所有公众号信息更新到redis
     *
     * @author ouyangzhenqiang
     * @date 2019/02/28 09:59
     */
    void loadAllWxPlatformsToRedis() throws Exception;

    /**
     * 查询所有的授权标识为Y的公众号记录，
     *
     * @author ouyangzhenqiang
     * @date 2019/02/28 10:00
     * @param record 公众号对象
     */
    List<WxPlatform> queryAuthPage(WxPlatform record) throws Exception;
    
    /**
     * 指定所属公司Id查询其下有效公众号
     * 
     * @author ouyangzhenqiang
     * @date 2019/02/28 13:49
     * @param record 公众号对象
     */
    WxPlatform countDefaultFlag(WxPlatform record) throws Exception;

    /**
     * 根据corp_id查询默认的微信公众号
     *
     * @author ouyangzhenqiang
     * @date 2019/02/28 13:49
     * @param record 公众号对象
     */
    WxPlatform queryDefaultByCorpid(WxPlatform record) throws Exception;

    /**
     * 更新公众号授权标识，基于公众号Id和corpId
     *
     * @author ouyangzhenqiang
     * @date 2019/02/28 14:02
     * @param record 公众号对象
     */
    void grantAuthFlagUpdateCancel(WxPlatform record) throws Exception;

    /**
     * 维护公众平台 -- 该接口针对开发者模式下，用户手工维护公众号
     *
     * @author ouyangzhenqiang
     * @date 2019/03/07 16:37
     */
    void addWxPlatformFroDevMode(WxPlatform record) throws Exception;
}
